@瞌睡虫
3年前 提问
2个回答

tomcat 加固有哪些方法

安全小白成长记
3年前

1.如果不需要控制台管理,请更改控制台用户文件,注销账号信息,如果需要控制台,请更改账户信息。
修改tomcat/conf/tomcat-user.xml文件
注释或修改如下信息
<tomcat-users> </tomcat-users>中间的是用户账号信息,manager-gui登录认证需要在这中间加入

<role rolename="manager-gui">
<user username="admin" password="www.123.com" roles="manager-gui"/>

2.开启日志功能,增加审计环节
修改conf/server.xml文件
去掉如下行的注释符

<Valve className=“org.apache.catalina.valves.AccessLogValve” directory=“logs” prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

3.避免泄露敏感信息
在网站根目录下新建noFile.html文件
查看并启用tomcat/conf/web.xml文件中下列代码:

<error-page>
<error-code>404</error-code>
<location>/noFile.html</location>
</error-page>

4.防止浏览器查看目录内容
编辑tomcat/conf/web.xml配置文件

<init-param>
        <param-name>listings</param-name>
        <param-value>true</param-value>
    </init-param>true改成false

5.禁用不安全的http请求方式
编辑tomcat/conf/web.xml配置,添加或修改如下信息

<security-constraint>
<web-resource-collection>
<url-pattern></url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>

6.访问来源白名单
编辑tomcat/conf/server.xml,添加如下

<value className=“org.apache.catalina.values.RemoteAddrValue” allow=IP地址" deny="" />

7.缓解dos攻击带来的过度资源占用――根据情况修改connectionTimeout,acceptCount,maxThreads
编辑tomcat/conf/server.xml文件

<Connector?port="8080"?protocol="HTTP/1.1"?connectionTimeout=300"?redirectPort=8443?acceptCount=500?maxThreads=400?/>

maxThreads 是处理请求的线程数,acceptCount 是等待队列,acceptCount并不是一定要大于等于maxThreads。maxThreads 满了,进入acceptCount ,acceptCount 也满了,则 拒绝请求
5.5版本以下为

<Connector className=“org.apache.coyote.tomcat4.CoyoteConnector” port=8080” minProcessors=5” maxProcessors=75” enableLookups=true” redirectPort=8443” acceptCount=100” debug=0” connectionTimeout=300 ” useURIValidationHack=false” protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

8.降低被扫描的几率――修改port=”8080”和redirectPort=“8443”
编辑tomcat/conf/server.xml文件

<Connector?port="8080"?protocol="HTTP/1.1"?connectionTimeout=300"?redirectPort=8443”acceptCount=500?maxThreads=400?/>

5.5版本以下为

<Connector className=“org.apache.coyote.tomcat4.CoyoteConnector” port=8080” minProcessors=5” maxProcessors=75” enableLookups=true” redirectPort=8443” acceptCount=100” debug=0” connectionTimeout=300 ” useURIValidationHack=false” protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

9.防止传输信息被截获解读
使用jdk的keytools生成密钥对
执行命令keytool -genkey -alias tomcat -keyalg RSA -keystore /mydir/keystore
修改tomcat的web.xml文件取消注释信息后添加秘钥路径和访问密码

<Connector port=8443” protocol=“org.apache.coyote.http11.Http11Protocol” maxThreads=150” SSLEnabled=true” scheme=“https” secure=true” clientAuth="false" keystor
在下炳尚
3年前
官方采纳

tomcat在默认配置下其存在一定的安全隐患,可被恶意攻击。以下是一些安全加固的方法:

1. 升级到最新稳定版

出于稳定性考虑,不建议进行跨版本升级,如果之前是6.0系列版本,最好还是使用该系列的最新版本。

eg:Tomcat6.x:该版本已经于2016年12月31日停止支持,最新稳定版本为6.0.53。

2. 从监听端口上加固

1) 如果Tomcat不需要对外提供服务,则监听在本地回环,前面放Nginx。如果需要对外提供访问,比如一个Nginx挂多个Tomcat,那么在服务器上用iptables只允许负载均衡器的IP来访问

<Connector port=8080″ address=127.0.0.1″

maxHttpHeaderSize=8192″ URIEncoding=UTF-8″

maxThreads=500″ minSpareThreads=25″ maxSpareThreads=75″

enableLookups=false” redirectPort=8443″ acceptCount=100″

connectionTimeout=10000″ disableUploadTimeout=true/>

2) 现在我们一般不用Apache通过AJP协议来调用Tomcat了,所以AJP端口可以关闭。
``

``
3) 在新版的Tomcat中,SHUTDOWN端口默认就是监听在127.0.0.1的,所以不需要修改。如果还想加固,那可以把SHUTDOWN换成其它的字符串。

<Server port=8005″ shutdown=”YourString”>

3.自定义错误页面,隐藏Tomcat信息

编辑conf/web.xml,在标签上添加以下内容:

<error-page>

<error-code>404</error-code>

<location>/404.html</location></error-page><error-page>

<error-code>500</error-code>

<location>/500.html</location></error-page>

4.禁用Tomcat管理页面

1) 删除webapps目录下Tomcat原有的所有内容

2) 删除conf/Catalina/localhost/下的host-manager.xml和manager.xml这两个文件

5.用普通用户启动Tomcat

useradd -M -s /bin/false tomcatchown -R tomcat.tomcat /usr/local/src/apache-tomcat-6.0.37su – tomcat -c “/usr/local/src/apache-tomcat-6.0.37/bin/catalina.sh start”

6.禁止Tomcat列目录

这在新版本中默认就是禁用的,可以在conf/web.xml中编辑

<init-param>

<param-name>listings</param-name>

<param-value>false</param-value></init-param>